      subroutine fonte()

      use globais
      implicit none




      integer :: i,j

      double precision :: dt




! !  Ricker wavelet
      double precision:: fc
!       double precision:: fcorte ja eh variavel global lida na entrada
      double precision:: tg
!       double precision, parameter :: fc = 25.
!       double precision, parameter :: fcorte=(3.*sqrt(Pi))*fc
!       double precision, parameter :: tg = 2.0*sqrt(Pi)/fcorte



!       double precision, parameter :: tp = 0.05d0  ! tempo de disparo    

      double precision, parameter :: t0=0.3   ! fonte do artigo do hustedt
      double precision, parameter :: alpha =200.    ! fonte do artigo do hustedt  

!       integer:: kw !contador de frequencias
      integer:: nn !contador de instantes de tempo


      double precision :: t

      double precision :: td      

      integer :: kwaux
      complex*16:: Staux
      double precision:: Swmax,Swmin

      integer:: Nttotalaux !< numero de instantes de tempo, variável auxiliar para a transformada inversa
      double precision :: dtaux !< intervalo de tempo referente ao Nttotalaux

      double precision :: dw


      allocate(Sw(2*Nomega))
!       allocate(omegas(2*Nomega))
! !       dw = (omegaf-omegai)/dfloat(Nomega)
!       do i=1,2*Nomega
! 	  omegas(i) = dfloat(i)*2.0d0*Pi/tf ! tempo final de observação
!       enddo

      write(*,*)'# transformada de Fourier da fonte'

!       if(escFreq.eq.0)then ! transformada completa
! 	  Nttotal=2*Nomega+1
! 	else if(escFreq.eq.1)then ! transformada para algumas freqs
! 	  Nttotal = 501
!       endif    
      nttotal = tf*ntps
!       dt=1.0d0/dfloat(ntps)
      dt=tf/(dfloat(nttotal))
      write(*,*)'# Nomega= ',Nomega,'N amostras temporais: ',Nttotal





! 	componentes da fonte no dom da freq a partir da assinatura da fonte

	do kw=1,Nomega
	    Sw(kw) = 0. 
	    DO nn=0,Nttotal-1
		Sw(kw) = Sw(kw) + St(nn+1)* EXP(-imag*omegas(kw)*nn*dt)
	    ENDDO
	    Sw(kw)= Sw(kw)*tf/dfloat(Nttotal)
	    Sw(2*Nomega-(kw-1))=CONJG(Sw(kw))
	enddo
!	fim do calculo de Sw






	open(1,file='outfontefreq.txt')
	write(1,*)'#freq em Hz, parte real, parte imaginaria, amplitude '
	do kw=1,2*Nomega
	    write(1,*)omegas(kw)/(2.*Pi), real(Sw(kw)),aimag(Sw(kw)),sqrt(real(Sw(kw))**2+aimag(Sw(kw))**2)
! 	    write(1,102)omegas(kw)/(2.*Pi), real(Sw(kw)),aimag(Sw(kw)),sqrt(real(Sw(kw))**2+aimag(Sw(kw))**2)
	enddo
	close(1)





	open(1,file='outfonte.txt')
	write(1,*)'#tempo, parte real, parte imaginaria '
	Nttotalaux = 2*Nomega+1
	dtaux = tf/dfloat(Nttotalaux-1)
	do nn=0,Nttotalaux-1
	    Staux = 0.
	    do kw=1,2*Nomega
		Staux = Staux + Sw(kw)/tf * EXP(imag*omegas(kw)*nn*dtaux)
	    enddo
	    write(1,*)nn*dtaux, real(Staux),aimag(Staux)
	enddo
	close(1)
	


      return
 102  format(4(E15.6))


      end subroutine fonte


